# 列表是有序的对象集合，字典是无序的对象集合。
# 两者之间的区别在于：字典当中的元素是通过键来存取的，而不是通过偏移存取。
# 字典是一种映射类型，字典用"{ }"标识，它是一个无序的键(key) : 值(value)对集合。
# 键(key)必须使用 不可变类型。
# 在同一个字典中，键(key)必须是唯一的。
# dict = {}
# dict['one'] = "1 - 菜鸟教程"
# dict[2] = "2 - 菜鸟工具"

tinydict = {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}

# print(dict['one'])  # 输出键为 'one' 的值
# print(dict[2])  # 输出键为 2 的值
print(tinydict)  # 输出完整的字典
print(tinydict.keys())  # 输出所有键
print(tinydict.values())  # 输出所有值
var = dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
#print(dict.keys())  # 输出所有键
print(var)
var1 = {x: x**2 for x in (2, 4, 6)}
print(var1)
var2 = dict(Runoob=1, Google=2, Taobao=3)
print(var2)

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

#更新的时候，有则修改，无则添加
dict['Age'] = 8;               # 更新 Age
dict['School'] = "菜鸟教程"  # 添加信息


print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print ("新的字典为 : %s" %  str(dict))

dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))

dict = {'Name': 'Runoob', 'Age': 7}

print ("Value : %s" %  dict.items())

dict = {'Name': 'Runoob', 'Age': 27}

print ("Age 值为 : %s" %  dict.get('Age'))
print ("Sex 值为 : %s" %  dict.get('Sex', "NA"))
print(dict)

dict = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Sex': 'female','Age':9 }
#如果dict2中的键与dict中的一样，采用dict2中的来替换
dict.update(dict2)
print ("更新字典 dict : ", dict)
#返回被删除的值。
dict=dict.pop('S1ex',None)
print(dict)
#popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=site.popitem()
print(pop_obj)
print(site)
